package com.example.springbolgdemo.common.util;


import org.apache.catalina.security.SecurityUtil;
import org.springframework.util.DigestUtils;
import org.springframework.util.StringUtils;

import java.nio.charset.StandardCharsets;
import java.util.UUID;

public class SecurityUtils {

    /**
     * 密码加密
     * @param password 明文密码
     * @return 盐值+MD5(盐值+密文)
     */
    public static String enrcypt(String password){
        //UUID中的数据是通过-符号分割的
        String salt=UUID.randomUUID().toString().replace("-","");
        //通过盐值+密码生成密文
        String finalPassword= DigestUtils.md5DigestAsHex((salt+password).getBytes(StandardCharsets.UTF_8));
        //返回盐值+密文
        return salt+finalPassword;
    }

    /**
     * 密码验证
     * @param password 用户输入的密码
     * @param sqlPassword 数据库中储存的密文
     * @return true-正确 false-错误
     */
    public static Boolean verify(String password,String sqlPassword){
        if (!StringUtils.hasLength(password) || !StringUtils.hasLength(sqlPassword)){
            return false;
        }
        if (sqlPassword.length()!=64){
            //密文一定是64位的
            return false;
        }
        String salt=sqlPassword.substring(0,32);
        //获得根据用户密码生成的密文
        String finalPassword=DigestUtils.md5DigestAsHex((salt+password).getBytes(StandardCharsets.UTF_8));
        return sqlPassword.equals(salt+finalPassword);
    }


}
